#ifndef _ANIMAL_
#define _ANIMAL_

#include "Food.h"

namespace Hunger
{
	class Animal : public Food
	{
	public:
		enum Sex { Male, Female, No_Sex };

		Animal();
		virtual ~Animal();

		bool IsFood();
		bool IsDead();

		void SetSex(Sex type) { sex = type; }
		const int GetSex() { return sex; }

		void SetAge(int newAge) { age = newAge; }
		const int GetAge() { return age; }

		void Eat(Food * food);

		virtual void Injure(int amount);

		virtual void Move() = 0;
		virtual void Attack() = 0;

	protected:
		int GetLife() { return life; }
		int GetHunger() { return hunger; }
		int GetSpeed() { return speed; }
		int GetStrength() { return strength; }
		int GetAffinity() { return affinity; }

	private:
		int sex;
		int age;
		int life;
		int hunger;
		int speed;
		int strength;
		int intelligence;

		//affinity is measured towards participant
		int affinity;
	};
}

#endif //_ANIMAL_
